Computers started off as big, centralized mainframe systems. Subsequently, minicomputers, workstations, and personal computers offered significant cost advantages and increased flexibility. Often, multiple computers are coupled together to form a local area network. Thereby, files, resources, information, and communications can be shared by the users. Programs or "jobs" are typically still processed by a user's primary computer. Indeed, current methods of managing multiple related processes are generally limited to a single machine. However, certain jobs may be overly complex or too time-consuming for a single computer to handle. Hence, it would be beneficial if such jobs could somehow be distributed so that they span two or more different computers on the network. In this manner, multiple machines could simultaneously The processing different parts of the job. For this to be implemented, there is a need for an apparatus and method of managing sets of related processes across a network.
Ancillary to the problem of having computers processing different jobs and different pieces of jobs relates to that of resource accounting. Computer networks often have many different, unrelated users that need to be charged separately for resource usage. A system for resource accounting provides records of resource usage that distinguishes users and tracks relevant resource usage information in a manner convenient for later analysis and compilation.
Standard accounting procedures call for the operating system kernel to write a record of resource usage information to a specific file whenever a process exits. The basic unit for record keeping is an individual process. The data generated by this accounting procedure can later be analyzed and post-processed to generate records for individual users or groups of users. However, the standard accounting procedure just described suffers several severe limitations. Many of these problems stem from the granularity of the accounting unit, an individual process, which proves very small for recording purposes. One problem is this system utilizes excessive time for recording information. Each process exit requires a record update. These updates require the system to halt other processing temporarily; the sum total of these delays can significantly stall a system. A second problem is that the amount of data generated by this system is substantial. The space to record the data and the time to analyze and post-process the data is proportional to the number of processes, which is generally very large.
A third problem arises specifically in the context of computer networks. On a network, a single, large process can be divided into several, small processes to run on several different machines simultaneously. For the purposes of both job control and accounting, it would be useful to treat these separate processes as a single entity. For example, a user might wish to remove a collection of related jobs from the entire set of machines simultaneously. In a similar manner, it would be desirable to allow a group of related processes, across different machines, to have their resource usage recorded as a group.
Therefore, it is an object of the present invention to improve the management structure for processes in a networked environment. It is also the object of the present invention to provide an accounting system for resource usage based on the grouping of related processes that offers significant advantages in terms of time, memory, and convenience of use. These and other objects of the present invention not specifically mentioned above will be evident from the detailed descriptions of the present invention herein presented.